/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cl.web.managedbeans;

import cl.bussines.ejbs.CargosFacade;
import cl.bussines.entities.Cargos;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.apache.log4j.Logger;

/**
 *
 * @author Vogel
 */
@ManagedBean(name="cargosMBean")
@SessionScoped
public class CargosMBean extends BaseMBean{

    private static final String VISTA_LISTAR_CREAR = "cargos";
    
    private List<Cargos> cargos;
    @EJB
    private cl.bussines.ejbs.CargosFacade ejbFacade;
    private static Logger LOG = Logger.getLogger(CargosMBean.class);
    private Cargos cargo = new Cargos(0); 
    private boolean check = false;
    private boolean esVisible = false;
    
    public String init(){
        return VISTA_LISTAR_CREAR;
    }
    
    public String limpiar(){
        this.cargo=new Cargos(0);
        return VISTA_LISTAR_CREAR;
    }
    
    public String guardar(){
        try{
            //SE EDITA CARGO
            if(this.cargo.getCargo() != null && !this.cargo.getCargo().trim().equals("")){
                if(this.cargo.getIdCargo()!=0){
                    LOG.info("START::EDITAR::");
                    ejbFacade.edit(cargo);
                    message(FacesMessage.SEVERITY_INFO,"Cargo editado correctamente.");
                    this.cargo=new Cargos();
                }else{
                    if(this.cargo.getIdCargo() == null) this.cargo.setIdCargo(0);
                    LOG.info("START::CREATE::");
                    ejbFacade.create(cargo);
                    message(FacesMessage.SEVERITY_INFO,"Ha sido creado correctamente.");
                    this.cargo=new Cargos(0);
                    cargos = null;
                }
            }
        } catch (Exception e) {
            LOG.error(e);
            message(FacesMessage.SEVERITY_ERROR,"Error al guardar cambios.");
        }
        return VISTA_LISTAR_CREAR;
    }
    
    public String delete(){
        try{
            int codigo = Integer.parseInt(getParam("codigo"));
            String index = getParam("index");

            LOG.info("Codigo del cargo a editar ["+codigo+"]");
            LOG.info("Index de la tabla ["+index+"]");
            LOG.info("cargos size ["+cargos.size()+"]");
            for(Cargos car : cargos){ 
                if(car.getIdCargo()==codigo){
                    LOG.info("Entro a setear el cargo;");
                    this.cargo = car;
                }
            }
            if(cargo != null && cargo.getIdCargo()!=0){
                LOG.info("START::DELETE::");
                ejbFacade.remove(cargo);
                message(FacesMessage.SEVERITY_INFO,"Ha eliminado correctamente.");
            }
            this.cargo=new Cargos(0);
            cargos.clear();
        } catch (Exception e) {
            LOG.error(e);
            message(FacesMessage.SEVERITY_ERROR,"Error al eliminar cargo.");
        }
        return VISTA_LISTAR_CREAR;
    }
    
    public String volver(){
        return init();
    }

    public String irEditar(){
        int codigo = Integer.parseInt(getParam("codigo"));
        String index = getParam("index");
        
        LOG.info("Codigo del cargo a editar ["+codigo+"]");
        LOG.info("Index de la tabla ["+index+"]");
        LOG.info("cargos size ["+cargos.size()+"]");
        for(Cargos car : cargos){ 
            if(car.getIdCargo()==codigo){
                LOG.info("Entro a setear el cargo;");
                this.cargo = car;
            }
        }
        LOG.info(cargo);
        return VISTA_LISTAR_CREAR;
    }

    public List<Cargos> getCargos() {
         if(cargos == null || cargos.isEmpty()){
            cargos = getEjbFacade().findAll();
        }
        return cargos;
    }

    public void setCargos(List<Cargos> cargos) {
        this.cargos = cargos;
    }

    public CargosFacade getEjbFacade() {
        return ejbFacade;
    }

    public void setEjbFacade(CargosFacade ejbFacade) {
        this.ejbFacade = ejbFacade;
    }

    public Cargos getCargo() {
        return cargo;
    }

    public void setCargo(Cargos cargo) {
        this.cargo = cargo;
    }

    public boolean isCheck() {
        return check;
    }

    public void setCheck(boolean check) {
        this.check = check;
    }

    public boolean isEsVisible() {
        return esVisible;
    }

    public void setEsVisible(boolean esVisible) {
        this.esVisible = esVisible;
    }
    
    
}
